//
//  TTNetworkHelper.h
//  TTBaseProject
//
//  Created by shny588 on 16/7/19.
//  Copyright © 2016年 tt. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "TTNetworkProtocol.h"
#import "IOSTool.h"

#define ErrorNoNetworkAlert             @"对不起，暂时没有网络可以使用"
#define Error404Alert                   @"请求失败"

typedef NS_ENUM(NSUInteger, NetworkErrorType) {
    NetworkErrorTypeNoNetwork = 0,//无网络
    NetworkErrorType404 = 1//找不到服务器
};

@interface TTNetworkHelper : NSObject

//解析代理
@property (strong,nonatomic) id<TTNetworkProtocol> parseDelegate;

+ (BOOL)isInternetReachable;
/**
 *  在view上显示指示器。不调用则不显示
 *
 *  @param view hud父view，如果为空则显示在window上
 *  @param message hud提示信息，如果为空则不显示提示信息
 */
- (void)showHUDAtView:(UIView*)view message:(NSString*)message;

/**
 *  发送post请求
 *
 *  @param URLString  url接口
 *  @param parameters 参数字典
 *  @param success    成功回调
 *  @param failure    失败回调
 */
- (void)POST:(NSString *)URLString
  parameters:(id)parameters
     success:(void (^)(TTNetworkResult *result))success
     failure:(void (^)(NetworkErrorType errorType))failure;

/**
 *  发送get请求
 *
 *  @param URLString  url接口
 *  @param parameters 参数字典
 *  @param success    成功回调
 *  @param failure    失败回调
 */
- (void)GET:(NSString *)URLString
 parameters:(id)parameters
    success:(void (^)(TTNetworkResult *result))success
    failure:(void (^)(NetworkErrorType errorType))failure;

/**
 *  上传文件
 *
 *  @param URLString  url接口
 *  @param fileData   data类型数据
 *  @param fileName   文件的名称（file）
 *  @param mimeType   文件的类型 (audio/amr，image/png，image/jpeg)
 *  @param parameters 参数字典
 *  @param success    成功回调
 *  @param failure    失败回调
 */
- (void)upload:(NSString *)URLString
      fileData:(NSData*)fileData
      fileName:(NSString*)fileName
      mimeType:(NSString*)mimeType
    parameters:(id)parameters
       success:(void (^)(TTNetworkResult *result))success
       failure:(void (^)(NetworkErrorType errorType))failure;

/**
 *  上传文件，带进度进度
 *
 *  @param URLString  url接口
 *  @param fileData   data类型数据
 *  @param fileName   文件的名称（file）
 *  @param mimeType   文件的类型 (audio/amr，image/png，image/jpeg)
 *  @param parameters 参数字典
 *  @param success    成功回调
 *  @param failure    失败回调
 *  @param progress   进度
 */
- (void)upload:(NSString *)URLString
      fileData:(NSData*)fileData
      fileName:(NSString*)fileName
      mimeType:(NSString*)mimeType
    parameters:(id)parameters
       success:(void (^)(TTNetworkResult *result))success
       failure:(void (^)(NetworkErrorType errorType))failure
      proGress:(void (^)(float progress))progress;

@end
